home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-10-28 | 77.8 KB | 1,849 lines |
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- NNNNAAAAMMMMEEEE
- fetchmail - fetch mail from a POP, IMAP, or ETRN-capable
- server
-
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ffffeeeettttcccchhhhmmmmaaaaiiiillll [_o_p_t_i_o_n_s] [_m_a_i_l_s_e_r_v_e_r...]
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _f_e_t_c_h_m_a_i_l is a mail-retrieval and forwarding utility; it
- fetches mail from remote mailservers and forwards it to your
- local (client) machine's delivery system. You can then
- handle the retrieved mail using normal mail user agents such
- as _e_l_m(1) or _M_a_i_l(1). The ffffeeeettttcccchhhhmmmmaaaaiiiillll utility can be run in a
- daemon mode to repeatedly poll one or more systems at a
- specified interval.
-
- The _f_e_t_c_h_m_a_i_l program can gather mail from servers
- supporting any of the common mail-retrieval protocols: POP2,
- POP3, IMAP2bis, and IMAP4. It can also use the ESMTP ETRN
- extension. (The RFCs describing all these protocols are
- listed at the end of this document.)
-
- While _f_e_t_c_h_m_a_i_l is primarily intended to be used over on-
- demand TCP/IP links (such as SLIP or PPP connections), it
- may also be useful as a message transfer agent for sites
- which refuse for security reasons to permit (sender-
- initiated) SMTP transactions with sendmail.
-
- As each message is retrieved _f_e_t_c_h_m_a_i_l normally delivers it
- via SMTP to port 25 on the machine it is running on
- (localhost), just as though it were being passed in over a
- normal TCP/IP link. The mail will then be delivered locally
- via your system's MDA (Mail Delivery Agent, usually
- _s_e_n_d_m_a_i_l(8) but your system may use a different one such as
- _s_m_a_i_l, _m_m_d_f, or _q_m_a_i_l). All the delivery-control mechanisms
- (such as ._f_o_r_w_a_r_d files) normally available through your
- system MDA and local delivery agents will therefore work.
-
- The behavior of _f_e_t_c_h_m_a_i_l is controlled by command-line
- options and a run control file, ~/._f_e_t_c_h_m_a_i_l_r_c, the syntax
- of which we describe below. Command-line options override
- ~/._f_e_t_c_h_m_a_i_l_r_c declarations.
-
- Each server name that you specify following the options on
- the command line will be queried. If you don't specify any
- servers on the command line, each server in your
- ~/._f_e_t_c_h_m_a_i_l_r_c file will be queried.
-
- To facilitate the use of _f_e_t_c_h_m_a_i_l In scripts, pipelines,
- etc., it returns an appropriate exit code upon termination
-
-
-
- Page 1 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- -- see EXIT CODES below.
-
-
- OOOOPPPPTTTTIIIIOOOONNNNSSSS
- The following options modify the behavior of _f_e_t_c_h_m_a_i_l. It
- is seldom necessary to specify any of these once you have a
- working ._f_e_t_c_h_m_a_i_l_r_c file set up.
-
- Almost all options have a corresponding keyword which can be
- used to declare them in a _f_e_t_c_h_m_a_i_l_r_c file.
-
- Some special options are not covered here, but are
- documented insttead in sections on AUTHENTICATION and DAEMON
- MODE which follows.
-
- GGGGeeeennnneeeerrrraaaallll OOOOppppttttiiiioooonnnnssss
- ----VVVV,,,, --------vvvveeeerrrrssssiiiioooonnnn
- Displays the version information for your copy of
- _f_e_t_c_h_m_a_i_l. No mail fetch is performed. Instead, for
- each server specified, all option information that
- would be computed if _f_e_t_c_h_m_a_i_l. were connecting to that
- server is displayed. Any non-printables in passwords
- or other string names are shown as backslashed C-like
- escape sequences. This option is useful for verifying
- that your options are set the way you want them.
-
- ----cccc,,,, --------cccchhhheeeecccckkkk
- Return a status code to indicate whether there is mail
- waiting, without actually fetching or deleting mail
- (see EXIT CODES below). This option turns off daemon
- mode (in which it would be useless). It doesn't play
- well with queries to multiple sites, and doesn't work
- with ETRN. It will return a false positive if you
- leave read but undeleted mail in your server mailbox
- and your fetch protocol can't tell kept messages from
- new ones. This means it will work with IMAP, not work
- with POP2, and may occasionally flake out under POP3.
-
- ----ssss,,,, --------ssssiiiilllleeeennnntttt
- Silent mode. Suppresses all progress/status messages
- that are normally echoed to standard error during a
- fetch. The --verbose option overrides this.
-
- ----vvvv,,,, --------vvvveeeerrrrbbbboooosssseeee
- Verbose mode. All control messages passed between
- _f_e_t_c_h_m_a_i_l and the mailserver are echoed to stderr.
- Overrides --silent.
-
- DDDDiiiissssppppoooossssaaaallll OOOOppppttttiiiioooonnnnssss
- ----aaaa,,,, --------aaaallllllll
- (Keyword: fetchall) Retrieve both old (seen) and new
- messages from the mailserver. The default is to fetch
-
-
-
- Page 2 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- only messages the server has not marked seen. Note
- that POP2 retrieval behaves as though --all is always
- on (see RETRIEVAL FAILURE MODES below) and this option
- does not work with ETRN.
-
- ----kkkk,,,, --------kkkkeeeeeeeepppp
- (Keyword: keep) Keep retrieved messages on the remote
- mailserver. Normally, messages are deleted from the
- folder on the mailserver after they have been
- retrieved. Specifying the kkkkeeeeeeeepppp option causes retrieved
- messages to remain in your folder on the mailserver.
- This option does not work with ETRN.
-
- ----KKKK,,,, --------nnnnooookkkkeeeeeeeepppp
- (Keyword: nokeep) Delete retrieved messages from the
- remote mailserver. This option forces retrieved mail
- to be deleted. It may be useful if you have specified
- a default of kkkkeeeeeeeepppp in your
-
- ----FFFF,,,, --------fffflllluuuusssshhhh
- POP3/IMAP only. Delete old (previously retrieved)
- messages from the mailserver before retrieving new
- messages. This option does not work with ETRN.
-
- PPPPrrrroooottttooooccccoooollll aaaannnndddd QQQQuuuueeeerrrryyyy OOOOppppttttiiiioooonnnnssss
- ----pppp,,,, --------pppprrrroooottttooooccccoooollll pppprrrroooottttoooo
- (Keyword: proto[col]) Specify the protocol to used when
- communicating with the remote mailserver. If no
- protocol is specified, _f_e_t_c_h_m_a_i_l will try each of the
- supported protocols in turn, terminating after any
- successful attempt. _p_r_o_t_o may be one of the following:
-
- POP2 Post Office Protocol 2
-
- POP3 Post Office Protocol 3
-
- APOP Use POP3 with MD5 authentication.
-
- RPOP Use POP3 with RPOP authentication.
-
- KPOP Use POP3 with Kerberos V4 authentication on port
- 1109.
-
- IMAP IMAP2bis, IMAP4, or IMAP4rev1 (_f_e_t_c_h_m_a_i_l
- autodetects their capabilities).
-
- IMAP-K4
- IMAP4, or IMAP4rev1 (_f_e_t_c_h_m_a_i_l autodetects their
- capabilities) with RFC 1731 Kerberos v4
- authentication.
-
- ETRN Use the ESMTP ETRN option.
-
-
-
- Page 3 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- All these alternatives work in basically the same way
- (communicating with standard server daemons to fetch mail
- already delivered to a mailbox on the server) except ETRN.
- The ETRN mode allows you to ask a compliant ESMTP server
- (such as BSD sendmail at release 8.8.0 or higher) to
- immediately open a sender-SMTP connection to your client
- machine and begin forwarding any items addressed to your
- client machine in the server's queue of undelivered mail.
-
- ----UUUU,,,, --------uuuuiiiiddddllll
- (Keyword: uidl) Force UIDL use (effective only with
- POP3). Force client-side tracking of `newness' of
- messages (UIDL stands for ``unique ID listing'' and is
- described in RFC1725). Use with `keep' to use a
- mailbox as a baby news drop for a group of users.
-
- ----PPPP,,,, --------ppppoooorrrrtttt
- (Keyword: port) The option permits you to specify a
- TCP/IP port to connect on. This option will seldom be
- necessary as all the supported protocols have well-
- established default port numbers.
-
- ----rrrr ffffoooollllddddeeeerrrr,,,, --------ffffoooollllddddeeeerrrr ffffoooollllddddeeeerrrr
- (Keyword: folder[s]) Causes a specified non-default
- mail folder on the mailserver (or comma-separated list
- of folders) to be retrieved. The syntax of the folder
- name is server-dependent. This option is not available
- under POP3 or ETRN.
-
- DDDDeeeelllliiiivvvveeeerrrryyyy CCCCoooonnnnttttrrrroooollll OOOOppppttttiiiioooonnnnssss
- ----SSSS hhhhoooosssstttt,,,, --------ssssmmmmttttpppphhhhoooosssstttt hhhhoooosssstttt
- (Keyword: smtp[host]) Specify a hunt list of hosts to
- forward mail to (one or more hostnames, comma-
- separated). In ETRN mode, set the host that the
- mailserver is asked to ship mail to. Hosts are tried
- in list order; the first one that is up becomes the
- forwarding or ETRN target for the current run.
-
- ----mmmm,,,, --------mmmmddddaaaa
- (Keyword: mda) You can force mail to be passed to an
- MDA directly (rather than forwarded to port 25) with
- the -mda or -m option. If _f_e_t_c_h_m_a_i_l is running as
- root, it sets its userid to that of the target user
- while delivering mail through an MDA. Some possible
- MDAs are "/usr/sbin/sendmail -oem", "/usr/lib/sendmail
- -oem", "/usr/bin/formail", and "/usr/bin/deliver".
- Local delivery addresses will be inserted into the MDA
- command wherever you place a %T; the mail message's
- From address will be inserted where you place an %F.
- Do _n_o_t use an MDA invocation like "sendmail -oem -t"
- that dispatches on the contents of To/Cc/Bcc, it will
- create mail loops and bring the just wrath of many
-
-
-
- Page 4 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- postmasters down upon your head.
-
- RRRReeeessssoooouuuurrrrcccceeee LLLLiiiimmmmiiiitttt CCCCoooonnnnttttrrrroooollll OOOOppppttttiiiioooonnnnssss
- ----llll,,,, --------lllliiiimmmmiiiitttt
- (Keyword: limit) Takes a maximum octet size argument.
- Messages larger than this size will not be fetched, not
- be marked seen, and will be left on the server (in
- foreground sessions, the progress messages will note
- that they are "oversized"). An explicit --limit of 0
- overrides any limits set in your run control file. This
- option is intended for those needing to strictly
- control fetch time in interactive mode. It may not be
- used with daemon mode, as users would never receive a
- notification that messages were waiting. This option
- does not work with ETRN.
-
- ----bbbb,,,, --------bbbbaaaattttcccchhhhlllliiiimmmmiiiitttt
- (Keyword: batchlimit) Specify the maximum number of
- messages that will be shipped to an SMTP listener
- before the connection is deliberately torn down and
- rebuilt (defaults to 0, meaning no limit). An explicit
- --batchlimit of 0 overrides any limits set in your run
- control file. While sssseeeennnnddddmmmmaaaaiiiillll(8) normally initiates
- delivery of a message immediately after receiving the
- message terminator, some SMTP listeners are not so
- prompt. MTAs like _q_m_a_i_l(8) and _s_m_a_i_l(8) may wait till
- the delivery socket is shut down to deliver. This may
- produce annoying delays when _f_e_t_c_h_m_a_i_l(8) is processing
- very large batches. Setting the batch limit to some
- nonzero size will prevent these delays. This option
- does not work with ETRN.
-
- ----BBBB,,,, --------ffffeeeettttcccchhhhlllliiiimmmmiiiitttt
- (Keyword: fetchlimit) Limit the number of messages
- accepted from a given server in a single poll. By
- default there is no limit. An explicit --fetchlimit of
- 0 overrides any limits set in your run control file.
- This option does not work with ETRN.
-
- ----eeee,,,, --------eeeexxxxppppuuuunnnnggggeeee
- (keyword: expunge) When talking to an IMAP server,
- _f_e_t_c_h_m_a_i_l normally issues an EXPUNGE command after each
- deletion in order to force the deletion to be done
- immediately. This is safest when your connection to
- the server is flaky and expensive, as it avoids
- resending duplicate mail after a line hit. However, on
- large mailboxes the overhead of re-indexing after every
- message can slam the server pretty hard, so if your
- connection is reliable it is good to do expunges less
- frequently. If you specify this option to an integer
- N, it tells _f_e_t_c_h_m_a_i_l to only issue expunges on every
- Nth delete. An argument of zero suppresses expunges
-
-
-
- Page 5 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- entirely (so no expunges at all will be done until the
- end of run). This option does not work with ETRN, POP2,
- or POP3.
-
- AAAAuuuutttthhhheeeennnnttttiiiiccccaaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
- ----uuuu nnnnaaaammmmeeee,,,, --------uuuusssseeeerrrrnnnnaaaammmmeeee nnnnaaaammmmeeee
- (Keyword: user[name]) Specifies the user identification
- to be used when logging in to the mailserver. The
- appropriate user identification is both server and
- user-dependent. The default is your login name on the
- client machine that is running _f_e_t_c_h_m_a_i_l. See USER
- AUTHENTICATION below for a complete description.
-
- ----IIII ssssppppeeeecccciiiiffffiiiiccccaaaattttiiiioooonnnn,,,, --------iiiinnnntttteeeerrrrffffaaaacccceeee ssssppppeeeecccciiiiffffiiiiccccaaaattttiiiioooonnnn
- (Keyword: interface) Require that a specific interface
- device be up and have a specific local IP address (or
- range) before polling. Frequently _f_e_t_c_h_m_a_i_l is used
- over a transient point-to-point TCP/IP link established
- directly to a mailserver via SLIP or PPP. That is a
- relatively secure channel. But when other TCP/IP
- routes to the mailserver exist (e.g. when the link is
- connected to an alternate ISP), your username and
- password may be vulnerable to snooping (especially when
- daemon mode automatically polls for mail, shipping a
- clear password over the net at predictable intervals).
- The --interface option may be used to prevent this.
- When the specified link is not up or is not connected
- to a matching IP address, polling will be skipped. The
- format is:
-
- interface/iii.iii.iii.iii/mmm.mmm.mmm.mmm
-
- The field before the first slash is the interface name
- (i.e. sl0, ppp0 etc.). The field before the second
- slash is the acceptable IP address. The field after
- the second slash is a mask which specifies a range of
- IP addresses to accept. If no mask is present
- 255.255.255.255 is assumed (i.e. an exact match). This
- option is currently only supported under Linux.
-
- ----MMMM iiiinnnntttteeeerrrrffffaaaacccceeee,,,, --------mmmmoooonnnniiiittttoooorrrr iiiinnnntttteeeerrrrffffaaaacccceeee
- (Keyword: monitor) Daemon mode can cause transient
- links which are automatically taken down after a period
- of inactivity (e.g. PPP links) to remain up
- indefinitely. This option identifies a system TCP/IP
- interface to be monitored for activity. After each
- poll interval, if the link is up but no other activity
- has occurred on the link, then the poll will be
- skipped. This option is currently only supported under
- Linux.
-
- ----AAAA,,,, --------aaaauuuutttthhhh
-
-
-
- Page 6 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- (Keyword: auth[enticate]) This option permits you to
- specify a preauthentication type (see USER
- AUTHENTICATION below for details). The possible values
- are `ppppaaaasssssssswwwwoooorrrrdddd' and `kkkkeeeerrrrbbbbeeeerrrroooossss' (or, for excruciating
- exactness, `kkkkeeeerrrrbbbbeeeerrrroooossss____vvvv4444'). This option is provided
- primarily for developers; choosing KPOP protocol
- automatically selects Kerberos preauthentication, and
- all other alternatives use password authentication
- (though APOP uses a generated one-time key as the
- password and IMAP-K4 uses RFC1731 Kerberos v4
- authentication). This option does not work with ETRN.
-
- MMMMiiiisssscccceeeellllllllaaaannnneeeeoooouuuussss OOOOppppttttiiiioooonnnnssss
- ----ffff ppppaaaatttthhhhnnnnaaaammmmeeee,,,, --------ffffeeeettttcccchhhhmmmmaaaaiiiillllrrrrcccc ppppaaaatttthhhhnnnnaaaammmmeeee
- Specify a non-default name for the ._f_e_t_c_h_m_a_i_l_r_c run
- control file. Unless the --version option is also on,
- the file must have permissions no more open than 0600
- (u=rw,g=,o=) or else be /dev/null.
-
- ----iiii ppppaaaatttthhhhnnnnaaaammmmeeee,,,, --------iiiiddddffffiiiilllleeee ppppaaaatttthhhhnnnnaaaammmmeeee
- Specify an alternate name for the .fetchids file used
- to save POP3 UIDs.
-
- ----nnnn,,,, --------nnnnoooorrrreeeewwwwrrrriiiitttteeee
- (Keyword: no rewrite) Normally, _f_e_t_c_h_m_a_i_l edits RFC-822
- address headers (To, From, Cc, Bcc, and Reply-To) in
- fetched mail so that any mail IDs local to the server
- are expanded to full addresses (@ and the mailserver
- hostname are appended). This enables replies on the
- client to get addressed correctly (otherwise your
- mailer might think they should be addressed to local
- users on the client machine!). This option disables
- the rewrite. (This option is provided to pacify people
- who are paranoid about having an MTA edit mail headers
- and want to know they can prevent it, but it is
- generally not a good idea to actually turn off
- rewrite.) When using ETRN, the rewrite option is
- ineffective.
-
- ----EEEE,,,, --------eeeennnnvvvveeeellllooooppppeeee
- (Keyword: envelope) This option changes the header
- _f_e_t_c_h_m_a_i_l assumes will carry a copy of the mail's
- envelope address. Normally this is `X-Envelope-To' but
- as this header is not standard, practice varies. See
- the discussion of multidrop address handling below. As
- a special case, `envelope "Received"' enables parsing
- of sendmail-style Received lines. This is the default,
- and it should not be necessary unless you have globally
- disabled Received parsing with `no envelope' in the
- ._f_e_t_c_h_m_a_i_l_r_c file.
-
- ----QQQQ,,,, --------qqqqvvvviiiirrrrttttuuuuaaaallll
-
-
-
- Page 7 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- (Keyword: qvirtual) The string assigned to this option
- will be removed from the user name found in the header
- specified with the _e_n_v_e_l_o_p_e option. This option is
- useful if you are using _f_e_t_c_h_m_a_i_l to collect the mail
- for an entire domain and your ISP (or your mail
- redirection provider) is using qmail. One of the basic
- features of qmail is the
-
- `Delivered-To:'
-
- message header. Whenever qmail delivers a message to a
- local mailbox it puts the username and hostname of the
- envelope recipient on this line. The major reason for
- this is to prevent mail loops. To set up qmail to
- batch mail for a disconnected site the ISP-mailhost
- will have normally put that site in its `Virtualhosts'
- control file so it will add a prefix to all mail
- addresses for this site. This results in mail sent to
- 'username@userhost.userdom.dom.com' having a
- `Delivered-To:' line of the form:
-
- Delivered-To: mbox-userstr-
- username@userhost.userdom.dom.com
-
- The ISP can make the 'mbox-userstr-' prefix anything
- they choose but a string matching the user host name is
- likely. By using the option `envelope Delivered-To:'
- you can make fetchmail reliably identify the original
- envelope recipient, but you have to strip the `mbox-
- userstr-' prefix to deliver to the correct user. This
- is what this option is for.
-
-
- UUUUSSSSEEEERRRR AAAAUUUUTTTTHHHHEEEENNNNTTTTIIIICCCCAAAATTTTIIIIOOOONNNN
- Every mode except ETRN requires authentication of the
- client. Normal user authentication in _f_e_t_c_h_m_a_i_l is very
- much like the authentication mechanism of _f_t_p(_1). The
- correct user-id and password depend upon the underlying
- security system at the mailserver.
-
- If the mailserver is a Unix machine on which you have an
- ordinary user account, your regular login name and password
- are used with _f_e_t_c_h_m_a_i_l. If you use the same login name on
- both the server and the client machines, you needn't worry
- about specifying a user-id with the ----uuuu option -- the default
- behavior is to use your login name on the client machine as
- the user-id on the server machine. If you use a different
- login name on the server machine, specify that login name
- with the ----uuuu option. e.g. if your login name is 'jsmith' on
- a machine named 'mailgrunt', you would start _f_e_t_c_h_m_a_i_l as
- follows:
-
-
-
-
- Page 8 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- fetchmail -u jsmith mailgrunt
-
- The default behavior of _f_e_t_c_h_m_a_i_l is to prompt you for your
- mailserver password before the connection is established.
- This is the safest way to use _f_e_t_c_h_m_a_i_l and ensures that
- your password will not be compromised. You may also specify
- your password in your ~/._f_e_t_c_h_m_a_i_l_r_c file. This is
- convenient when using _f_e_t_c_h_m_a_i_l in daemon mode or with
- scripts.
-
- If you do not specify a password, and _f_e_t_c_h_m_a_i_l cannot
- extract one from your ._f_e_t_c_h_m_a_i_l_r_c file, it will look for a
- ._n_e_t_r_c file in your home directory before requesting one
- interactively; if an entry matching the mailserver is found
- in that file, the password will be used. See the _f_t_p(1) man
- page for details of the syntax of the ._n_e_t_r_c file. (This
- feature may allow you to avoid duplicating password
- information in more than one file.)
-
- On mailservers that do not provide ordinary user accounts,
- your user-id and password are usually assigned by the server
- administrator when you apply for a mailbox on the server.
- Contact your server administrator if you don't know the
- correct user-id and password for your mailbox account.
-
- Early versions of POP3 (RFC1081, RFC1225) supported a crude
- form of independent authentication using the _r_h_o_s_t_s file on
- the mailserver side. Under this RPOP variant, a fixed per-
- user ID equivalent to a password was sent in clear over a
- link to a reserved port, with the command RPOP rather than
- PASS to alert the server that it should do special checking.
- RPOP is supported by _f_e_t_c_h_m_a_i_l (you can specify `protocol
- RPOP' to have the program send `RPOP' rather than `PASS')
- but its use is strongly discouraged. This facility was
- vulnerable to spoofing and was withdrawn in RFC1460.
-
- RFC1460 introduced APOP authentication. In this variant of
- POP3, you register an APOP password on your server host (the
- program to do this with on the server is probably called
- _p_o_p_a_u_t_h(8)). You put the same password in your ._f_e_t_c_h_m_a_i_l_r_c
- file. Each time _f_e_t_c_h_m_a_i_l logs in, it sends a
- cryptographically secure hash of your password and the
- server greeting time to the server, which can verify it by
- checking its authorization database.
-
- If your _f_e_t_c_h_m_a_i_l was built with Kerberos support and you
- specify Kerberos preauthentication (either with --auth or
- the ._f_e_t_c_h_m_a_i_l_r_c option aaaauuuutttthhhheeeennnnttttiiiiccccaaaatttteeee kkkkeeeerrrrbbbbeeeerrrroooossss____vvvv4444) it will
- try to get a Kerberos ticket from the mailserver at the
- start of each query.
-
- If you use IMAP-K4, _f_e_t_c_h_m_a_i_l will expect the IMAP server to
-
-
-
- Page 9 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- have RFC1731-conformant AUTHENTICATE KERBEROS_V4 capability,
- and will use it.
-
- If you are using POP3, and the server issues a one-time-
- password challenge conforming to RFC1938, _f_e_t_c_h_m_a_i_l will use
- your password as a pass phrase to generate the required
- response. This avoids sending secrets over the net
- unencrypted.
-
- Compuserve's RPA authentication (similar to APOP) is
- supported. If you are using POP3, and the RPA code has been
- compiled into your binary, and you query a server in the
- Compuserve csi.com domain, _f_e_t_c_h_m_a_i_l will try to perform an
- RPA pass-phrase authentication instead of sending over the
- password en clair.
-
-
- DDDDAAAAEEEEMMMMOOOONNNN MMMMOOOODDDDEEEE
- The --------ddddaaaaeeeemmmmoooonnnn or ----dddd option runs _f_e_t_c_h_m_a_i_l in daemon mode.
- You must specify a numeric argument which is a polling
- interval in seconds.
-
- In daemon mode, _f_e_t_c_h_m_a_i_l puts itself in background and runs
- forever, querying each specified host and then sleeping for
- the given polling interval.
-
- Simply invoking
-
- fetchmail -d 900
-
- will, therefore, poll all the hosts described in your
- ~/._f_e_t_c_h_m_a_i_l_r_c file (except those explicitly excluded with
- the `skip' verb) once every fifteen minutes.
-
- It is possible to set a polling interval in your
- ~/._f_e_t_c_h_m_a_i_l_r_c file by saying `set daemon <interval>', where
- <interval> is an integer number of seconds. If you do this,
- fetchmail will always start in daemon mode unless you
- override it with the command-line option --daemon 0 or -d0.
-
- Only one daemon process is permitted per user; in daemon
- mode, _f_e_t_c_h_m_a_i_l makes a per-user lockfile to guarantee this.
- The option --------qqqquuuuiiiitttt will kill a running daemon process.
- Otherwise, calling fetchmail with a daemon in the background
- sends a wakeup signal to the daemon, forcing it to poll
- mailservers immediately. (The wakeup signal is SIGHUP if
- fetchmail is running as root, SIGUSR1 otherwise.)
-
- The ----tttt or --------ttttiiiimmmmeeeeoooouuuutttt option (keyword: timeout)allows you to
- set a server-nonresponse timeout in seconds. If a
- mailserver does not send a greeting message or respond to
- commands for the given number of seconds, _f_e_t_c_h_m_a_i_l will
-
-
-
- Page 10 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- hang up on it. Without such a timeout _f_e_t_c_h_m_a_i_l might hang
- up indefinitely trying to fetch mail from a down host. This
- would be particularly annoying for a _f_e_t_c_h_m_a_i_l running in
- background.
-
- The ----LLLL or --------llllooooggggffffiiiilllleeee option (keyword: set logfile) allows you
- to redirect status messages emitted while detached into a
- specified logfile (follow the option with the logfile name).
- The logfile is opened for append, so previous messages
- aren't deleted. This is primarily useful for debugging
- configurations.
-
- The --------ssssyyyysssslllloooogggg option (keyword: syslog) allows you to redirect
- status and error messages emitted to the _s_y_s_l_o_g(3) system
- daemon if available. Messages are logged with an id of
- ffffeeeettttcccchhhhmmmmaaaaiiiillll, the facility LLLLOOOOGGGG____MMMMAAAAIIIILLLL, and priorities LLLLOOOOGGGG____EEEERRRRRRRR,
- LLLLOOOOGGGG____AAAALLLLEEEERRRRTTTT or LLLLOOOOGGGG____IIIINNNNFFFFOOOO. This option is intended for logging
- status and error messages which indicate the status of the
- daemon and the results while fetching mail from the
- server(s). Error messages for command line options and
- parsing the ._f_e_t_c_h_m_a_i_l_r_c file are still written to stderr,
- or the specified log file if the ----LLLL or --------llllooooggggffffiiiilllleeee option was
- used.
-
- The --------iiiinnnnvvvviiiissssiiiibbbblllleeee option tries to make fetchmail invisible.
- Normally, fetchmail behaves like any other MTA would -- it
- generates a Received header into each message describing its
- place in the chain of transmission, and tells the MTA it
- forwards to that the mail came from the machine fetchmail
- itself is running on. If the invisible option is on, the
- Received header is suppressed and fetchmail tries to spoof
- the MTA it forwards to into thinking it came directly from
- the mailserver host.
-
- The ----NNNN or --nodetach option suppresses backgrounding and
- detachment of the daemon process from its control terminal.
- This is primarily useful for debugging. Note that this also
- causes the logfile option to be ignored (though perhaps it
- shouldn't).
-
- Note that while running in daemon mode polling a POP2 or
- POP3 server, transient errors (such as DNS failures or
- sendmail delivery refusals) may force the fetchall option on
- for the duration of the next polling cycle. This is a
- robustness feature. It means that if a message is fetched
- (and thus marked seen by the mailserver) but not delivered
- locally due to some transient error, it will be re-fetched
- during the next poll cycle. (The IMAP logic doesn't delete
- messages until they're delivered, so this problem does not
- arise.)
-
-
-
-
-
- Page 11 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- RRRREEEETTTTRRRRIIIIEEEEVVVVAAAALLLL FFFFAAAAIIIILLLLUUUURRRREEEE MMMMOOOODDDDEEEESSSS
- The protocols _f_e_t_c_h_m_a_i_l uses to talk to mailservers are next
- to bulletproof. In normal operation forwarding to port 25,
- no message is ever deleted (or even marked for deletion) on
- the host until the SMTP listener on the client has
- acknowledged to _f_e_t_c_h_m_a_i_l that the message has been accepted
- for delivery. When forwarding to an MDA, however, there is
- more possibility of error (because there's no way for
- fetchmail to get a reliable positive acknowledgement from
- the MDA).
-
- The normal mode of _f_e_t_c_h_m_a_i_l is to try to download only
- `new' messages, leaving untouched (and undeleted) messages
- you have already read directly on the server (or fetched
- with a previous _f_e_t_c_h_m_a_i_l --_k_e_e_p). But you may find that
- messages you've already read on the server are being fetched
- (and deleted) even when you don't specify --all. There are
- several reasons this can happen.
-
- One could be that you're using POP2. The POP2 protocol
- includes no representation of `new' or `old' state in
- messages, so _f_e_t_c_h_m_a_i_l must treat all messages as new all
- the time. But POP2 is obsolete, so this is unlikely.
-
- Under POP3, blame RFC1725. That version of the POP3
- protocol specification removed the LAST command, and some
- POP servers follow it (you can verify this by invoking
- _f_e_t_c_h_m_a_i_l -_v to the mailserver and watching the response to
- LAST early in the query). The _f_e_t_c_h_m_a_i_l code tries to
- compensate by using POP3's UID feature, storing the
- identifiers of messages seen in each session until the next
- session, in the ._f_e_t_c_h_i_d_s file. But this doesn't track
- messages seen with other clients, or read directly with a
- mailer on the host but not deleted afterward. A better
- solution would be to switch to IMAP.
-
- Another potential POP3 problem might be servers that insert
- messages in the middle of mailboxes (some VMS
- implementations of mail are rumored to do this). The
- _f_e_t_c_h_m_a_i_l code assumes that new messages are appended to the
- end of the mailbox; when this is not true it may treat some
- old messages as new and vice versa. The only real fix for
- this problem is to switch to IMAP.
-
- The IMAP code uses the presence or absence of the server
- flag \Seen to decide whether or not a message is new. Under
- Unix, it counts on your IMAP server to notice the BSD-style
- Status flags set by mail user agents and set the \Seen flag
- from them when appropriate. All Unix IMAP servers we know
- of do this, though it's not specified by the IMAP RFCs. If
- you ever trip over a server that doesn't, the symptom will
- be that messages you have already read on your host will
-
-
-
- Page 12 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- look new to the server. In this (unlikely) case, only
- messages you fetched with _f_e_t_c_h_m_a_i_l --_k_e_e_p will be both
- undeleted and marked old.
-
- In ETRN mode, _f_e_t_c_h_m_a_i_l does not actually retrieve messages;
- instead, it asks the server's SMTP listener to start a queue
- flush to the client via SMTP. Therefore it sends only
- undelivered messages.
-
-
- SSSSPPPPAAAAMMMM FFFFIIIILLLLTTTTEEEERRRRIIIINNNNGGGG
- Many SMTP listeners allow administrators to set up `spam
- filters' that block unsolicited email from specified
- domains. A MAIL FROM line that triggers this feature will
- elicit an SMTP response which (unfortunately) varies
- according to the listener.
-
- Newer versions of _s_e_n_d_m_a_i_l return an error code of 571.
- This return value is blessed by RFC1893 as "Delivery not
- authorized, message refused".
-
- According to current drafts of the replacement for RFC821,
- the correct thing to return in this situation is 550
- "Requested action not taken: mailbox unavailable" (the
- draft adds "[E.g., mailbox not found, no access, or command
- rejected for policy reasons].").
-
- The _e_x_i_m MTA returns 501 "Syntax error in parameters or
- arguments" , but will move to 550 soon.
-
- The _f_e_t_c_h_m_a_i_l code recognizes any of these error codes and
- discards the message. This is the _o_n_l_y circumstance under
- which fetchmail ever discards mail.
-
- If _f_e_t_c_h_m_a_i_l is fetching from an IMAP server, the antispam
- response will be detected and the message rejected
- immediately after the headers have been fetched, without
- reading the message body. Thus, you won't pay for
- downloading spam message bodies.
-
-
- TTTTHHHHEEEE RRRRUUUUNNNN CCCCOOOONNNNTTTTRRRROOOOLLLL FFFFIIIILLLLEEEE
- The preferred way to set up fetchmail is to write a
- ._f_e_t_c_h_m_a_i_l_r_c file in your home directory. When there is a
- conflict between the command-line arguments and the
- arguments in this file, the command-line arguments take
- precedence.
-
- To protect the security of your passwords, when --version is
- not on your ~/._f_e_t_c_h_m_a_i_l_r_c may not have more than 0600
- (u=rw,g=,o=) permissions; _f_e_t_c_h_m_a_i_l will complain and exit
- otherwise.
-
-
-
- Page 13 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- You may read the ._f_e_t_c_h_m_a_i_l_r_c file as a list of commands to
- be executed when _f_e_t_c_h_m_a_i_l is called with no arguments.
-
- RRRRuuuunnnn CCCCoooonnnnttttrrrroooollll SSSSyyyynnnnttttaaaaxxxx
- Comments begin with a '#' and extend through the end of the
- line. Otherwise the file consists of a series of server
- entries or global option statements in a free-format,
- token-oriented syntax.
-
- There are four kinds of tokens: grammar keywords, numbers
- (i.e. decimal digit sequences), unquoted strings, and quoted
- strings. A quoted string is bounded by double quotes and
- may contain whitespace (and quoted digits are treated as a
- string). An unquoted string is any whitespace-delimited
- token that is neither numeric, string quoted nor contains
- the special characters `,', `;', `:', or `='.
-
- Any amount of whitespace separates tokens in server entries,
- but is otherwise ignored. You may use standard C-style
- escapes (\n, \t, \b, octal, and hex) to embed non-printable
- characters or string delimiters in strings.
-
- Each server entry consists of one of the keywords `poll' or
- `skip', followed by a server name, followed by server
- options, followed by any number of user descriptions. Note:
- the most common cause of syntax errors is mixing up user and
- server options.
-
- For backward compatibility, the word `server' is a synonym
- for `poll'.
-
- You can use the noise keywords `and', `with', `has',
- `wants', and `options' anywhere in an entry to make it
- resemble English. They're ignored, but but can make entries
- much easier to read at a glance. The punctuation characters
- ':', ';' and ',' are also ignored.
-
- PPPPoooollllllll vvvvssss.... SSSSkkkkiiiipppp
- The `poll' verb tells fetchmail to query this host when it
- is run with no arguments. The `skip' verb tells _f_e_t_c_h_m_a_i_l
- not to poll this host unless it is explicitly named on the
- command line. (The `skip' verb allows you to experiment
- with test entries safely, or easily disable entries for
- hosts that are temporarily down.)
-
- KKKKeeeeyyyywwwwoooorrrrdddd////OOOOppppttttiiiioooonnnn SSSSuuuummmmmmmmaaaarrrryyyy
- Here are the legal server options. Keyword suffixes
- enclosed in square brackets are optional. Those
- corresponding to command-line options are followed by `-'
- and the appropriate option letter.
-
- Keyword Opt Function
-
-
-
- Page 14 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- _________________________________________________________
- via Specify DNS name of mailserver,
- overriding poll name
- proto[col] -p Specify protocol (case
- insensitive): POP2, POP3, IMAP,
- IMAP-K4, APOP, KPOP
- port -P Specify TCP/IP service port
- auth[enticate] -A Set preauthentication type
- (default `password')
- timeout -t Server inactivity timout in
- seconds (default 300)
- envelope -E Specify envelope-address header
- name
- no envelope Disable looking for envelope
- address
- qvirtual -Q Qmail virtual domain prefix to
- remove from user name
- aka Specify alternate DNS names of
- mailserver
- interface -I specify IP interface(s) that must
- be up for server poll to take
- place
- monitor -M Specify IP address to monitor for
- activity
- dns Enable DNS lookup for multidrop
- (default)
- no dns Disable DNS lookup for multidrop
- uidl -U Force POP3 to use client-side
- UIDLs
- no uidl Turn off POP3 use of client-side
- UIDLs (default)
-
- Here are the legal user options:
-
- K_e_y_w_o_r_d__________O_p_t____F_u_n_c_t_i_o_n___________________________
- user[name] -u Set remote user name (local user
- name if name followed by `here')
- is Connect local and remote user
- names
- to Connect local and remote user
- names
- pass[word] Specify remote account password
- folder -r Specify remote folder to query
- smtphost -S Specify smtp host(s) to forward to
- mda -m Specify MDA for local delivery
- preconnect Command to be executed before each
- connection
- postconnect Command to be executed after each
- connection
- keep -k Don't delete seen messages from
-
-
-
-
-
- Page 15 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- server
- flush -F Flush all seen messages before
- querying
- fetchall -a Fetch all messages whether seen or
- not
- rewrite Rewrite destination addresses for
- reply (default)
- stripcr Strip carriage returns from ends
- of lines
- forcecr Force carriage returns at ends of
- lines
- pass8bits Force BODY=8BITMIME to ESMTP
- listener
- dropstatus Strip Status lines out of incoming
- mail
- no keep -K Delete seen messages from server
- (default)
- no flush Don't flush all seen messages
- before querying (default)
- no fetchall Retrieve only new messages
- (default)
- no rewrite Don't rewrite headers
- no stripcr Don't strip carriage returns
- (default)
- no forcecr Don't force carriage returns at
- EOL (default)
- no pass8bits Don't force BODY=8BITMIME to ESMTP
- listener (default)
- no dropstatus Don't drop Status headers
- (default)
- limit -l Set message size limit
- batchlimit -b Max # messages to fetch in single
- connect
- fetchlimit -B Max # messages to forward in
- single connect
- expunge -e Perform an expunge on every #th
- message (IMAP only)
- syslog Do error logging through
- syslog(3).
-
- Remember that all user options must _f_o_l_l_o_w all server
- options.
-
- In the .fetchmailrc file, the `envelope' string argument may
- be preceded by a whitespace-separated number. This number,
- if specified, is the number of such headers to skip (that
- is, an argument of 1 selects the second header of the given
- type). This is sometime useful for ignoring bogus Received
- headers created by an ISP's local delivery agent.
-
- KKKKeeeeyyyywwwwoooorrrrddddssss NNNNooootttt CCCCoooorrrrrrrreeeessssppppoooonnnnddddiiiinnnngggg TTTToooo OOOOppppttttiiiioooonnnn SSSSwwwwiiiittttcccchhhheeeessss
- The `folder' and `smtphost' options (unlike their command-
-
-
-
- Page 16 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- line equivalents) can take a space- or comma-separated list
- of names following them.
-
- All options correspond to the obvious command-line
- arguments, except the following: `via', `interval', `aka',
- `is', `to', `dns'/`no dns', `password', `preconnect',
- `postconnect', `localdomains', `stripcr'/`no stripcr',
- `forcecr'/`no forcecr', `pass8bits'/`no pass8bits'
- `dropstatus/no dropstatus', and `no envelope'.
-
- The `via' option is for use with ssh, or if you want to have
- more than one configuration pointing at the same site. If
- it is present, the string argument will be taken as the
- actual DNS name of the mailserver host to query. This will
- override the argument of poll, which can then simply be a
- distinct label for the configuration (e.g. what you would
- give on the command line to explicitly query this host). If
- the `via' name is `localhost', the poll name will also still
- be used as a possible match in multidrop mode; otherwise the
- `via' name will be used instead and the poll name will be
- purely a label.
-
- The `interval' option (which takes a numeric argument)
- allows you to poll a server less frequently than the basic
- poll interval. If you say `interval N' the server this
- option is attached to will only be queried every N poll
- intervals.
-
- The `is' or `to' keywords associate the following local
- (client) name(s) (or server-name to client-name mappings
- separated by =) with the mailserver user name in the entry.
- If an is/to list has `*' as its last name, unrecognized
- names are simply passed through.
-
- A single local name can be used to support redirecting your
- mail when your username on the client machine is different
- from your name on the mailserver. When there is only a
- single local name, mail is forwarded to that local username
- regardless of the message's Received, To, Cc, and Bcc
- headers. In this case _f_e_t_c_h_m_a_i_l never does DNS lookups.
-
- When there is more than one local name (or name mapping) the
- _f_e_t_c_h_m_a_i_l code does look at the Received, To, Cc, and Bcc
- headers of retrieved mail (this is `multidrop mode'). It
- looks for addresses with hostname parts that match your poll
- name or your `via', `aka' or `localdomains' options, and
- usually also for hostname parts which DNS tells it are
- aliases of the mailserver. See the discussion of `dns',
- `localdomains', and `aka' for details on how matching
- addresses are handled. If _f_e_t_c_h_m_a_i_l cannot match any
- mailserver usernames or localdomain addresses, the default
- recipient is the calling user.
-
-
-
- Page 17 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- The `dns' option (normally on) controls the way addresses
- from multidrop mailboxes are checked. On, it enables logic
- to check each host address that doesn't match an `aka' or
- `localdomains' declaration by looking it up with DNS. When
- a mailserver username is recognized attached to a matching
- hostname part, its local mapping is added to the list of
- local recipients.
-
- The `aka' option is for use with multidrop mailboxes. It
- allows you to pre-declare a list of DNS aliases for a
- server. This is an optimization hack that allows you to
- trade space for speed. When _f_e_t_c_h_m_a_i_l, while processing a
- multidrop mailbox, grovels through message headers looking
- for names of the mailserver, pre-declaring common ones can
- save it from having to do DNS lookups.
-
- The `localdomains' option allows you to declare a list of
- domains which fetchmail should consider local. When
- fetchmail is parsing address lines in multidrop modes, and a
- trailing segment of a host name matches a declared local
- domain, that address is passed through to the listener or
- MDA unaltered (local-name mappings are _n_o_t applied).
-
- If you are using `localdomains', you may also need to
- specify `no envelope', which disables _f_e_t_c_h_m_a_i_l's normal
- attempt to deduce an envelope address from the Received line
- or X-Envelope-To header or whatever header has been
- previously set by `envelope'. If you set `no envelope' in
- the defaults entry it is possible to undo that in individual
- entries by using `envelope <string>'. As a special case,
- `envelope "Received"' restores the default parsing of
- Received lines.
-
- The ppppaaaasssssssswwwwoooorrrrdddd option requires a string argument, which is the
- password to be used with the entry's server.
-
- The `preconnect' keyword allows you to specify a shell
- command to be executed just before each time _f_e_t_c_h_m_a_i_l
- establishes a mailserver connection. This may be useful if
- you are attempting to set up secure POP connections with the
- aid of _s_s_h(1). If the command returns a nonzero status, the
- poll of that mailserver will be aborted.
-
- Similarly, the `postconnect' keyword similarly allows you to
- specify a shell command to be executed just after each time
- a mailserver connection is taken down.
-
- The `forcecr' option controls whether lines terminated by LF
- only are given CRLF termination before forwarding. Strictly
- speaking RFC821 requires this, but few MTAs enforce the
- requirement it so this option is normally off (only one such
- MTA, qmail, is in significant use at time of writing).
-
-
-
- Page 18 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- The `stripcr' option controls whether carriage returns are
- stripped out of retrieved mail before it is forwarded. It
- is normally not necessary to set this, because it defaults
- to `on' (CR stripping enabled) when there is an MDA declared
- but `off' (CR stripping disabled) when forwarding is via
- SMTP. If `stripcr' and `forcecr' are both on, `stripcr'
- will override.
-
- The `pass8bits' option exists to cope with Microsoft mail
- programs that stupidly slap a "Content-Transfer-Encoding:
- 7bit" on everything. With this option off (the default) and
- such a header present, _f_e_t_c_h_m_a_i_l declares BODY=7BIT to an
- ESMTP-capable listener; this causes problems for messages
- actually using 8-bit ISO or KOI-8 character sets, which will
- be garbled by having the high bits of all characters
- stripped. If `pass8bits' is on, _f_e_t_c_h_m_a_i_l is forced to
- declare BODY=8BITMIME to any ESMTP-capable listener. If the
- listener is 8-bit-clean (as all the major ones now are) the
- right thing will probably result.
-
- The `dropstatus' option controls whether nonempty Status
- lines are retained in fetched mail (the default) or
- discarded. Retaining them allows your MUA to see what
- messages (if any) were marked seen on the client. On the
- other hand, it can confuse some new-mail notifiers, which
- assume that anything with a Status line in it has been seen.
- (Note: the empty Status lines inserted by some buggy POP
- servers are unconditionally discarded.)
-
- MMMMiiiisssscccceeeellllllllaaaannnneeeeoooouuuussss RRRRuuuunnnn CCCCoooonnnnttttrrrroooollll OOOOppppttttiiiioooonnnnssss
- The words `here' and `there' have useful English-like
- significance. Normally `user eric is esr' would mean that
- mail for the remote user `eric' is to be delivered to `esr',
- but you can make this clearer by saying `user eric there is
- esr here', or reverse it by saying `user esr here is eric
- there'
-
- Legal protocol identifiers for use with the `protocol'
- keyword are:
-
- auto (or AUTO)
- pop2 (or POP2)
- pop3 (or POP3)
- imap (or IMAP)
- imap-k4 (or IMAP-K4)
- apop (or APOP)
- kpop (or KPOP)
-
-
- Legal authentication types are `password' or `kerberos'.
- The former specifies authentication by normal transmission
- of a password (the password may be plaintext or subject to
-
-
-
- Page 19 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- protocol-specific encryption as in APOP); the second tells
- _f_e_t_c_h_m_a_i_l to try to get a Kerberos ticket at the start of
- each query instead, and send an arbitrary string as the
- password.
-
- Specifying `kpop' sets POP3 protocol over port 1109 with
- Kerberos V4 preauthentication. These defaults may be
- overridden by later options.
-
- There are currently three global option statements; `set
- logfile' followed by a string sets the same global specified
- by --logfile. A command-line --logfile option will override
- this. Also, `set daemon' sets the poll interval as --daemon
- does. This can be overridden by a command-line --daemon
- option; in particular --daemon 0 can be used to force
- foreground operation. Finally, `set syslog' sends log
- messages to syslogd(8).
-
-
- CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- Basic format is:
-
- poll SERVERNAME protocol PROTOCOL username NAME password PASSWORD
-
- Example:
-
- poll pop.provider.net protocol pop3 username jsmith password secret1
-
- Or, using some abbreviations:
-
- poll pop.provider.net proto pop3 user jsmith password secret1
-
- Multiple servers may be listed:
-
- poll pop.provider.net proto pop3 user jsmith pass secret1
- poll other.provider.net proto pop2 user John.Smith pass My^Hat
-
- Here's a version of those two with more whitespace and some
- noise words:
-
- poll pop.provider.net proto pop3
- user jsmith, with password secret1, is jsmith here;
- poll other.provider.net proto pop2:
- user John.Smith, with password My^Hat, is John.Smith here;
-
- This version is much easier to read and doesn't cost
- significantly more (parsing is done only once, at startup
- time).
-
-
- If you need to include whitespace in a parameter string,
- enclose the string in double quotes. Thus:
-
-
-
- Page 20 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- poll mail.provider.net with proto pop3:
- user jsmith there has password "u can't krak this"
- is jws here and wants mda "/bin/mail"
-
- You may have an initial server description headed by the
- keyword `defaults' instead of `poll' followed by a name.
- Such a record is interpreted as defaults for all queries to
- use. It may be overwritten by individual server
- descriptions. So, you could write:
-
- defaults proto pop3
- user jsmith
- poll pop.provider.net
- pass secret1
- poll mail.provider.net
- user jjsmith there has password secret2
-
- It's possible to specify more than one user per server (this
- is only likely to be useful when running fetchmail in daemon
- mode as root). The `user' keyword leads off a user
- description, and every user specification in a multi-user
- entry must include it. Here's an example:
-
- poll pop.provider.net proto pop3 port 3111
- user jsmith with pass secret1 is smith here
- user jones with pass secret2 is jjones here
-
- This associates the local username `smith' with the
- pop.provider.net username `jsmith' and the local username
- `jjones' with the pop.provider.net username `jones'.
-
- Here's what a simple retrieval configuration for a multi-
- drop mailbox looks like:
-
- poll pop.provider.net:
- user maildrop with pass secret1 to golux hurkle=happy snark here
-
- This says that the mailbox of account `maildrop' on the
- server is a multi-drop box, and that messages in it should
- be parsed for the server user names `golux', `hurkle', and
- `snark'. It further specifies that `golux' and `snark' have
- the same name on the client as on the server, but mail for
- server user `hurkle' should be delivered to client user
- `happy'.
-
- Here's an example of another kind of multidrop connection:
-
- poll pop.provider.net localdomains loonytoons.org:
- user maildrop with pass secret1 to esr * here
-
- This also says that the mailbox of account `maildrop' on the
- server is a multi-drop box. It tells fetchmail that any
-
-
-
- Page 21 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- address in the loonytoons.org domain (including subdomain
- addresses like `joe@daffy.loonytoons.org') should be passed
- through to the local SMTP listener without modification. Be
- careful of mail loops if you do this!
-
- Here's an example configuration using ssh. The queries go
- through an ssh connecting local port 1234 to port 110 on
- mailhost.net; the preconnect command sets up the ssh.
-
- poll mailhost.net via localhost port 1234 with pop3:
- preconnect "ssh -f -L 1234:mailhost.net:110
- mailhost.net sleep 20 </dev/null >/dev/null";
-
-
- TTTTHHHHEEEE UUUUSSSSEEEE AAAANNNNDDDD AAAABBBBUUUUSSSSEEEE OOOOFFFF MMMMUUUULLLLTTTTIIIIDDDDRRRROOOOPPPP
- Use the multiple-local-recipients feature with caution -- it
- can bite. Also note that all multidrop features are
- ineffective in ETRN mode.
-
-
- HHHHeeeeaaaaddddeeeerrrr vvvvssss.... EEEEnnnnvvvveeeellllooooppppeeee aaaaddddddddrrrreeeesssssssseeeessss
- The fundamental problem is that by having your mailserver
- toss several peoples' mail in a single maildrop box, you may
- have thrown away potentially vital information about who
- each piece of mail was actually addressed to (the `envelope
- address', as opposed to the header addresses in the RFC822
- To/Cc/Bcc headers). This `envelope address' is the address
- you need in order to reroute mail properly.
-
- Sometimes _f_e_t_c_h_m_a_i_l can deduce the envelope address. If the
- mailserver MTA is _s_e_n_d_m_a_i_l and the item of mail had just one
- recipient, the MTA will have written a `by/for' clause that
- gives the envelope addressee into its Received header. But
- this doesn't work reliably for other MTAs, nor if there is
- more than one recipient. By default, _f_e_t_c_h_m_a_i_l looks for
- envelope addresses in these lines; you can restore this
- default with -E "Received" or `envelope Received'.
-
- Alternatively, some SMTP listeners and/or mail servers
- insert a header in each message containing a copy of the
- envelope addresses. This header (when it exists) is often
- `X-Envelope-To'. Fetchmail's assumption about this can be
- changed with the -E or `envelope' option. Note that writing
- an envelope header of this kind exposes the names of
- recipients (including blind-copy recopients) to all
- receivers of the messages; it is therefore regarded by some
- administrators as a security/privacy problem.
-
- A slight variation of the `X-Envelope-To' header is the
- `Delivered-To' put by qmail to avoid mail loops. It will
- probably prefix the user name with a string that normally
- matches the user's domain. To remove this prefix you can use
-
-
-
- Page 22 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- the -Q or `qvirtual' option.
-
- Sometimes, unfortunately, neither of these methods works.
- When they all fail, fetchmail must fall back on the contents
- of To/Cc/Bcc headers to try to determine recipient
- addressees -- and these are not reliable. In particular,
- mailing-list software often ships mail with only the list
- broadcast address in the To header.
-
- When _f_e_t_c_h_m_a_i_l cannot deduce a recipient address that is
- local, and the intended recipient address was anyone other
- than fetchmail's invoking user, mail will get lost. This is
- what makes the multidrop feature risky.
-
- A related problem is that when you blind-copy a mail
- message, the Bcc information is carried _o_n_l_y as envelope
- address (it's not put in the headers fetchmail can see
- unless there is an X-Envelope header). Thus, blind-copying
- to someone who gets mail over a fetchmail link will fail
- unless the the mailserver host routinely writes X-Envelope
- or an equivalent header into messages in your maildrop.
-
-
- GGGGoooooooodddd WWWWaaaayyyyssss TTTToooo UUUUsssseeee MMMMuuuullllttttiiiiddddrrrroooopppp MMMMaaaaiiiillllbbbbooooxxxxeeeessss
- Multiple local names can be used to administer a mailing
- list from the client side of a _f_e_t_c_h_m_a_i_l collection.
- Suppose your name is `esr', and you want to both pick up
- your own mail and maintain a mailing list called (say)
- "fetchmail-friends", and you want to keep the alias list on
- your client machine.
-
- On your server, you can alias `fetchmail-friends' to `esr';
- then, in your ._f_e_t_c_h_m_a_i_l_r_c, declare `to esr fetchmail-
- friends here'. Then, when mail including `fetchmail-
- friends' as a local address gets fetched, the list name will
- be appended to the list of recipients your SMTP listener
- sees. Therefore it will undergo alias expansion locally.
- Be sure to include `esr' in the local alias expansion of
- fetchmail-friends, or you'll never see mail sent only to the
- list. Also be sure that your listener has the "me-too"
- option set (sendmail's -oXm command-line option or OXm
- declaration) so your name isn't removed from alias
- expansions in messages you send.
-
- This trick is not without its problems, however. You'll
- begin to see this when a message comes in that is addressed
- only to a mailing list you do _n_o_t have declared as a local
- name. Each such message will feature an `X-Fetchmail-
- Warning' header which is generated because fetchmail cannot
- find a valid local name in the recipient addresses. Such
- messages default (as was described above) to being sent to
- the local user running _f_e_t_c_h_m_a_i_l, but the program has no way
-
-
-
- Page 23 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- to know that that's actually the right thing.
-
-
- BBBBaaaadddd WWWWaaaayyyyssss TTTToooo AAAAbbbbuuuusssseeee MMMMuuuullllttttiiiiddddrrrroooopppp MMMMaaaaiiiillllbbbbooooxxxxeeeessss
- Multidrop mailboxes and _f_e_t_c_h_m_a_i_l serving multiple users in
- daemon mode do not mix. The problem, again, is mail from
- mailing lists, which typically does not have an individual
- recipient address on it. Unless _f_e_t_c_h_m_a_i_l can deduce an
- envelope address, such mail will only go to the account
- running fetchmail (probably root). Also, blind-copied users
- are very likely never to see their mail at all.
-
- If you're tempted to use _f_e_t_c_h_m_a_i_l to retrieve mail for
- multiple users from a single mail drop via POP or IMAP,
- think again (and reread the section on header and envelope
- addresses above). It would be smarter to just let the mail
- sit in the mailserver's queue and use fetchmail's ETRN mode
- to trigger SMTP sends periodically (of course, this means
- you have to poll more frequently than the mailserver's
- expiry period). If you can't arrange this, try setting up a
- UUCP feed.
-
- If you absolutely _m_u_s_t use multidrop for this purpose, make
- sure your mailserver writes an envelope-address header that
- fetchmail can see. Otherwise you _w_i_l_l lose mail and it _w_i_l_l
- come back to haunt you.
-
-
- SSSSppppeeeeeeeeddddiiiinnnngggg UUUUpppp MMMMuuuullllttttiiiiddddrrrroooopppp CCCChhhheeeecccckkkkiiiinnnngggg
- Normally, when multiple user are declared _f_e_t_c_h_m_a_i_l extracts
- recipient addresses as described above and checks each host
- part with DNS to see if it's an alias of the mailserver. If
- so, the name mappings described in the to ... here
- declaration are done and the mail locally delivered.
-
- This is the safest but also slowest method. To speed it up,
- pre-declare mailserver aliases with `aka'; these are checked
- before DNS lookups are done. If you're certain your aka
- list contains aaaallllllll DNS aliases of the mailserver (and all MX
- names pointing at it) you can declare `no dns' to suppress
- DNS lookups entirely and _o_n_l_y match against the aka list.
-
-
- EEEEXXXXIIIITTTT CCCCOOOODDDDEEEESSSS
- To facilitate the use of _f_e_t_c_h_m_a_i_l in shell scripts, an exit
- code is returned to give an indication of what occurred
- during a given connection.
-
- The exit codes returned by _f_e_t_c_h_m_a_i_l are as follows:
-
- 0 One or more messages were successfully retrieved.
-
-
-
-
- Page 24 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- 1 There was no mail awaiting retrieval. (There may have
- been old mail still on the server but not selected for
- retrieval.)
-
- 2 An error was encountered when attempting to open a
- socket for the POP connection. If you don't know what
- a socket is, don't worry about it -- just treat this as
- an 'unrecoverable error'.
-
- 3 The user authentication step failed. This usually
- means that a bad user-id, password, or APOP id was
- specified.
-
- 4 Some sort of fatal protocol error was detected.
-
- 5 There was a syntax error in the arguments to _f_e_t_c_h_m_a_i_l.
-
- 6 The run control file had bad permissions.
-
- 7 There was an error condition reported by the server.
- Can also fire if _f_e_t_c_h_m_a_i_l timed out while waiting for
- the server.
-
- 8 Client-side exclusion error. This means _f_e_t_c_h_m_a_i_l
- either found another copy of itself already running, or
- failed in such a way that it isn't sure whether another
- copy is running.
-
- 9 The user authentication step failed because the server
- responded "lock busy". Try again after a brief pause!
- This error is not implemented for all protocols, nor
- for all servers. If not implemented for your server,
- "3" will be returned instead, see above. May be
- returned when talking to qpopper or other servers that
- can respond with "lock busy" or some similar text
- containing the word "lock".
-
- 10 The _f_e_t_c_h_m_a_i_l. run failed while trying to do an SMTP
- port open or transaction.
-
- 11 Fatal DNS error. Fetchmail encountered an error while
- performing a DNS lookup at startup and could not
- proceed.
-
- 11 Internal error. You should see a message on standard
- error with details.
-
- When _f_e_t_c_h_m_a_i_l queries more than one host, return status is
- 0 if _a_n_y query successfully retrieved mail. Otherwise the
- returned error status is that of the last host queried.
-
-
-
-
-
- Page 25 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Eric S. Raymond <esr@snark.thyrsus.com>. This program is
- descended from and replaces _p_o_p_c_l_i_e_n_t, by Carl Harris
- <ceharris@mal.com>; the internals are quite different, but
- some of its interface design is directly traceable to that
- ancestral program.
-
-
- FFFFIIIILLLLEEEESSSS
- ~/.fetchmailrc
- default run control file
-
- ~/.fetchids
- default location of file associating hosts with last
- message IDs seen (used only with newer RFC1725-
- compliant POP3 servers supporting the UIDL command).
-
- ~/.netrc
- your FTP run control file, which (if present) will be
- searched for passwords as a last resort before
- prompting for one interactively.
-
- ~/.fetchmail
- lock file to help prevent concurrent runs (non-root
- mode).
-
- /var/run/fetchmail.pid
- lock file to help prevent concurrent runs (root mode,
- Linux systems).
-
- /etc/fetchmail.pid
- lock file to help prevent concurrent runs (root mode,
- systems without /var/run).
-
-
- EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
- For correct initialization, _f_e_t_c_h_m_a_i_l requires either that
- both the USER and HOME environment variables are correctly
- set, or that ggggeeeettttppppwwwwuuuuiiiidddd(3) be able to retrieve a password
- entry from your user ID.
-
-
- SSSSIIIIGGGGNNNNAAAALLLLSSSS
- If a _f_e_t_c_h_m_a_i_l daemon is running as root, SIGHUP wakes it up
- from its sleep phase and forces a poll of all non-skipped
- servers (this is in accordance with the usual conventions
- for system daemons).
-
- If _f_e_t_c_h_m_a_i_l is running in daemon mode as non-root, use
- SIGUSR1 to wake it (this is so SIGHUP due to logout can
- retain the default action of killing it).
-
-
-
-
- Page 26 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- Running _f_e_t_c_h_m_a_i_l in foreground while a background fetchmail
- is running will do whichever of these is appropriate to wake
- it up.
-
-
- BBBBUUUUGGGGSSSS AAAANNNNDDDD KKKKNNNNOOOOWWWWNNNN PPPPRRRROOOOBBBBLLLLEEEEMMMMSSSS
- The RFC822 parser used in multidrop mode chokes on some @-
- addresses that are technically legal but bizarre. Strange
- uses of quoting and embedded comments are likely to confuse
- it.
-
- Use of any of the supported protocols other than POP3 with
- OTP or RPA, APOP, KPOP, IMAP-K4, or ETRN requires that the
- program send unencrypted passwords over the TCP/IP
- connection to the mailserver. This creates a risk that
- name/password pairs might be snaffled with a packet sniffer
- or more sophisticated monitoring software. Under Linux, the
- --interface option can be used to restrict polling to
- availability of a specific interface device with a specific
- local IP address, but snooping is still possible if (a)
- either host has a network device that can be opened in
- promiscuous mode, or (b) the intervening network link can be
- tapped.
-
- Send comments, bug reports, gripes, and the like to Eric S.
- Raymond <esr@thyrsus.com>. An HTML FAQ is available at the
- fetchmail home page; surf to
- http://www.ccil.org/~esr/fetchmail or do a WWW search for
- pages with `fetchmail' in their titles.
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- elm(1), mail(1), sendmail(8), popd(8), imapd(8)
-
- AAAAPPPPPPPPLLLLIIIICCCCAAAABBBBLLLLEEEE SSSSTTTTAAAANNNNDDDDAAAARRRRDDDDSSSS
- SMTP/ESMTP:
- RFC 821, RFC 1869, RFC 1652, RFC 1870, RFC1983, RFC
- 1985
-
- mail:
- RFC 822
-
- POP2:
- RFC 937
-
- POP3:
- RFC 1081, RFC 1225, RFC 1460, RFC 1725, RFC 1939
-
- APOP:
- RFC 1460, RFC 1725, RFC 1939
-
- RPOP:
-
-
-
- Page 27 (printed 6/9/98)
-
-
-
-
-
-
- ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ffffeeeettttcccchhhhmmmmaaaaiiiillll((((1111))))
-
-
-
- RFC 1081, RFC 1225
-
- IMAP2/IMAP2BIS:
- RFC 1176, RFC 1732
-
- IMAP4:
- RFC 1730, RFC 1731, RFC 1732, RFC 2060, RFC 2061
-
- ETRN:
- RFC 1985
-
- OTP: RFC 1938
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 28 (printed 6/9/98)
-
-
-
-